package com.sxit.tdf.server.util;

import java.io.*;

/** 文件读取工具类 */
public class FileUtil {

  /** 读取文件内容，作为字符串返回 */
  public static String readFileAsString(String filePath) throws IOException {
    File file = new File(filePath);
    if (!file.exists()) {
      throw new FileNotFoundException(filePath);
    }

    if (file.length() > 1024 * 1024 * 1024) {
      throw new IOException("File is too large");
    }

    StringBuilder sb = new StringBuilder((int) (file.length()));
    // 创建字节输入流
    FileInputStream fis = new FileInputStream(filePath);
    // 创建一个长度为10240的Buffer
    byte[] bbuf = new byte[10240];
    // 用于保存实际读取的字节数
    int hasRead = 0;
    while ((hasRead = fis.read(bbuf)) > 0) {
      sb.append(new String(bbuf, 0, hasRead));
    }
    fis.close();
    return sb.toString();
  }

  /** 根据文件路径读取byte[] 数组 */
  public static byte[] readFileByBytes(String filePath) throws IOException {
    File file = new File(filePath);
    if (!file.exists()) {
      throw new FileNotFoundException(filePath);
    } else {
      ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length());
      BufferedInputStream in = null;

      try {
        in = new BufferedInputStream(new FileInputStream(file));
        short bufSize = 1024;
        byte[] buffer = new byte[bufSize];
        int len1;
        while (-1 != (len1 = in.read(buffer, 0, bufSize))) {
          bos.write(buffer, 0, len1);
        }

        byte[] var7 = bos.toByteArray();
        return var7;
      } finally {
        try {
          if (in != null) {
            in.close();
          }
        } catch (IOException var14) {
          var14.printStackTrace();
        }

        bos.close();
      }
    }
  }
}
